Banc de registres
Dans un processeur, un banc de registres est une mémoire interne au processeur, dans laquelle sont rassemblés certains (voire la totalité) des registres du processeur. En anglais, on parle de register file.
Dans les microprocesseurs, les bancs de registres sont généralement réalisés à l'aide de RAM statique (bascules).
Banc de registre simple port
[modifier | modifier le code]![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Banc_de_registre.png/220px-Banc_de_registre.png)
Un bancs de registre contient une entrée d'adresse sur laquelle on place une suite de bits qui permet d'identifier le registre à sélectionner. Cette suite de bits n'est autre que le nom du registre en question. Sur les processeurs avec un banc de registres, on peut voir le nom d'un registre comme une sorte d'adresse permettant d'identifier un registre dans le banc de registres.
Il ne faut pas oublier que certains registres n'ont pas de noms : le Program Counter, le registre d'état, etc. Ceux-ci ne sont pas forcément rassemblés avec les autres registres et sont souvent intégrés dans des circuits spécialisés ou mis à part des autres registres. Ce n'est toutefois pas systématique : on peut placer ces registres dans un banc de registres, bien que ce soit rarement utilisé. Dans ce cas, les adresses dans le banc de registres seront plus longues que leurs noms pour permettre l'ajout de ces registres supplémentaires.
Bancs de registres multiports
[modifier | modifier le code]![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Banc_de_registre_multiports.png/220px-Banc_de_registre_multiports.png)
Les bancs de registre multiports disposent de plusieurs ports d'accès, afin de pouvoir lire ou écrire dans plusieurs registres à la fois. Ce n'est pas une obligation : certains bancs de registres n'ont qu'un seul port.
L'utilisation de plusieurs ports trouve sa justification dans le fait que les instructions d'un processeur ont souvent besoin de lire plusieurs opérandes pour faire leurs calculs. Par exemple, une addition va devoir additionner deux nombres, chacun dans un registre. Utiliser plusieurs ports permet ainsi à l'opération d'avoir tous ses opérandes disponibles le plus vite possible : on n'a pas besoin de charger ces opérandes un par un. Certains processeurs, les processeurs superscalaires, exécutent plusieurs instructions en même temps, et un banc de registre multiport est alors encore plus utile.
Contrairement à la RAM statique ordinaire pour laquelle la lecture et l'écriture passent par les mêmes ports, les bancs de registres sont équipés de ports distincts pour la lecture et l'écriture.
Influence du jeu d'instructions sur les bancs de registres
[modifier | modifier le code]L'architecture externe d'un processeur définit presque toujours un ensemble de registres (dits architecturaux) qui sont utilisés pour stocker des données entre la mémoire et les éléments du chemin de données. Dans les processeurs les plus simples, ces registres architecturaux correspondent exactement aux entrées d'un banc de registres.
Les processeurs plus élaborés ont recours au renommage de registres, de façon que l'association entre un registre architectural et l'entrée physique dans le banc de registres puisse changer au cours de l'exécution. Le fonctionnement exact du banc de registres est alors caché au programmeur.